SushiSwap仿盘,YUNO与KIMCHI智能合约漏洞或存安全隐患
北京时间8月31日和9月1日,CertiK安全研究团队发现Sushiswap仿盘的两个项目YUNo Finance (YUNO)与KIMCHI.finance (KIMCHI),其智能合约均存在漏洞。如果利用该漏洞,智能合约拥有者可以无限制地增发项目对应的代币数目,导致项目金融进度通胀并最终崩溃。
无限增发漏洞
以Yuno项目中智能合约为例,CertiK安全研究团队对于该无限增发漏洞进行了详细分析,技术细节如下:
在Yuno项目中的MasterChef.sol智能合约第1354行中,dev方法可以允许当前拥有devaddr身份的智能合约调用者,将devaddr身份转移给另外一个地址。
下图中可以看到在智能合约1282行的mint方法是由修饰器onlyOwner进行限制,修饰器onlyOwner决定了只能是智能合约拥有者来执行这个合约。
以上三截图均出自:
https://etherscan.io/address/0x450f143f1a8650fff968d890814bd5884bdc8f1d#code
拥有devaddr身份的调用者,当其身份恰好同时为owner身份的时候,可以通过调用MasterChef.sol智能合约1282行的mint方法,来无限制的增发代币。1282行的mint方法会继续调用1130行的mint方法,并继续由1130行mint方法调用1044行的_mint方法,并最终完成代币增发的操作。
Kimichi项目智能合约中存在的无限增发漏洞与以上漏洞基本相同,因此在这里不进行重复叙述。
如果owner和devaddr的地址如果相同,那么在外部没有对智能合约拥有者限制的情况下,智能合约拥有者拥有权利增发任意数量的代币,这将会将投资者置于风险之中。那么Yuno和Kimichi这两个项目中的devaddr和owner是否为同一人呢?是否有其他外部制约机制可以限制这两个项目的智能合约拥有者呢?
下图为Yuno项目MasterChef.sol智能合约中拥有devaddr和owner身份的地址(截止北京时间9月1日晚11点)。
下图为Kimichi项目中KimchiChef.sol智能合约中拥有devaddr和owner身份的地址(截止北京时间9月1日晚11点)。
从上两图中可以看到,Yuno项目中拥有devaddr和owner身份的地址为同一个,因此其智能合约拥有者有权利进行无限制的代币增发。而Kimichi项目中拥有devaddr和owner身份不同,但由于devaddr的身份可以进行转移,因此也存在一定的风险。
目前措施
为了确保无限增发漏洞不会被触发,对于Yuno和Kimichi两个项目的智能合约拥有者必须由外部进行限制。当前已经实施的限制条件与Sushiswap项目一致,即对任何由智能合约拥有者进行的智能合约操作,均有48小时的延迟。任何来自智能合约拥有者的操作都会被所有投资者观察到,并有48小时进行应对操作。
CertiK安全团队建议
当前DeFi以及相关Farming项目异常火爆,由于区块链项目对于项目代码公开性有要求,因此上线新项目门槛极低。如果盲目借鉴其他项目,任意漏洞都可能被引入到项目中。因此在项目上线之前,应该对项目进行严格的安全审计。
从投资者角度,当前Farming项目动辄百分之几千的回报率,极易促使投资者在没有对项目本身有足够了解的情况下进行盲目投资。例如SushiSwap,Yuno以及Kimchi三个项目均没有经过严谨的安全验证就快速上线。投资者可能会被巨大的利益回报迷惑,将宝贵资金投入到有极大风险的智能合约中。
往期回顾
CertiK工程师专访 | FBI学本事,白帽黑客终现身!SushiSwap智能合约漏洞事件分析CertiK工程师专访 | 在代码世界中不断寻求优化